访问电脑版页面

导航:老古开发网手机版MSP430单片机问答

基于MSP430系统时钟低功耗模式的设置

导读:
关键字:
系统时钟,MSP430单片机,

如何将系统时钟设置到外部高频晶体振荡器,430的MCLK默认的是DCO的,如何安全的从DCO切换到外部晶体振荡器,这是一个很重要的步骤,因为经过此步骤,可以极大地提高430的处理能力,DCO在内部,可以为cpu提供强劲稳定的时钟。

#include

void main( void )

{

// Stop watchdog TImer to prevent TIme out reset

WDTCTL = WDTPW + WDTHOLD;

volaTIle unsigned int i;

P5DIR |=BIT4;//设置P5.4为输出

P5SEL |=BIT4;//设置片内主系统时钟的输出

//由这段代码设置如何将DCO切换到高频晶体振荡器

BCSCTL1 &=~XT2OFF;//~0x80

do

{

IFG1 &=~OFIFG;//OFIFG为1表示外部晶体振荡器失效

for(i = 0xff;i》0;i--);//IFG1是Interrupt Flag 1

}

while((IFG1 & OFIFG));//表示振荡器已经起振

BCSCTL2 |= SELM_2;//#define SELM_2 (0x80) /* MCLK Source Select 2: XT2CLK/LFXTCLK */

while(1);

}

低功耗模式的设置:

msp430内部有4种低功耗模式,在进入低功耗模式的时候,cpu停止,一般是由外部事件的响应才能唤醒cpu

由于IAR软件比较给力,所以进入低功耗模式的常用格式

比如:

进入低功耗模式2:LPM2;

退出低功耗模式2:LPM2_EXIT;

开启外部中断:_EINT():

关闭外部中断:_DINIT();

430外部中断的模式

#include

main( void )

{

BCSCTL1 “=DIVA_2;//(0x20) /* ACLK Divider 2: /4 */

WDTCTL = WDT_ADLY_1000;//直接将看门狗定时器变成定时器,定时时间是1000毫秒

IE1 =WDTIE;//打开定时器中断

P2DIR |= BIT3;

while(1)

{

unsigned int i;

_BIS_SR(LPM3_bits +GIE);//进入低功耗模式3,这种时候,cpu停止工作,同时打开总的中断 //_BIS_SR是一个本增函数,

//_BIS_SR()是一个本增函数,通过本函数可以对寄存器进行直接的操作

//这句话等价于_EINT();

// LPM3;

P2OUT &=~BIT3;//相当于把第五位输出0

for(i = 180000;i》0;i--);//延时

P2OUT |= BIT3;//p3.5输出1

}

}

#pragma vector =WDT_VECTOR

__interrupt void watchdag_timer(void)

{

//__BIC_SR_IRQ(LPM3_bits);//从中断中,将低功耗模式退出,将cpu从睡眠模式唤醒

LPM3_EXIT;//退出低功耗模式

}

来源:未知   作者:工程师周亮  2018/11/5 15:55:00
栏目: [ MSP430单片机问答]

相关阅读

51、AVR、PIC、MSP430、ARM五大单片机全解析

基于MSP430系统时钟低功耗模式的设置

如果你是MSP430初学者,希望这些问题的解答可以帮助你

如何将无线固件/软件升级应用在 MSP430 微控制器 中?

如何设计一个以MSP430F2274单片机为控制核心的智能小车?

关于MSP430FLASH(13X/14X)芯片的在线仿真,调试,下载程序的接线

MSP430都是贴片的,如何焊接 ?

如何让低功耗MSP430的功耗更低?

msp430单片机没有外部RAM,也就是说:无法接总线驱动设备。不知各位大侠是否同意。

MSP430 十六位单片机中有5伏电压的型号吗?

MSP430F13X系列的单片机ADC要外加电阻、电容?